﻿using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Operador.Communication.Bovespa.Usuario.Usuario;
using Sinacor.Infra.UI.Security.Services;

namespace Sinacor.UI.Bovespa.Operador.Communication
{
    public class Usuario : BaseCommunication
    {
        #region Construtor

        public Usuario(SessionInformation sessionInformation) 
            : base(sessionInformation)
        {        
        }
        
        #endregion

        #region ConsultarUsuarios

        public ModelCollection<Model.Usuario> ConsultarUsuarios(Model.Parameter.FiltroUsuario request)
        {
            IUsuario servico = null;
            ModelCollection<Model.Usuario> retorno = null;
            try
            {
                using(ServiceInstance<IUsuario> service = new ServiceInstance<IUsuario>())
                {
                    servico = service.TryGetInstance(this.Session);
                    retorno = new Translator.DataContractToModel.Usuario().ToUsuario
                          (
                              servico.ConsultarUsuarios(new Translator.ModelToDataContract.Usuario().ToFiltroUsuarioRequest(request))
                          );
                }
            }
            catch (Exception ex)
            {
                this.HandleFault(ex);
            }

            return retorno;
        }

        #endregion
    }
}
